﻿using CAD.BLL;
using CAD.DTO;
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;

namespace WFASmartketing.PRESENTACION_BASICOS
{
    public partial class NewProducto : Form
    {
        private int QueHacer = 0;
        private int MODIFICAR = 1;
        private int INSERTAR = 0;
        private int PKmodificar = 0;
        public NewProducto()
        {
            InitializeComponent();
        }

        private void button1_Click(object sender, EventArgs e)
        {

            this.producto_SelectLikeTableAdapter.Fill(this.productoDS.producto_SelectLike, "%" + txtbuscar .Text+ "%");
            this.dataGridView1.Refresh();
            //this.producto_SelectLikeTableAdapter.GetData('');
          
        }

        private void NewProducto_Load(object sender, EventArgs e)
        {
            // TODO: This line of code loads data into the 'unidadMedidaDS.unidadmedida' table. You can move, or remove it, as needed.
            this.unidadmedidaTableAdapter.Fill(this.unidadMedidaDS.unidadmedida);
            // TODO: This line of code loads data into the 'marcaDS.marca' table. You can move, or remove it, as needed.
            this.marcaTableAdapter.Fill(this.marcaDS.marca);
            // TODO: This line of code loads data into the 'categoriaDS.categoria' table. You can move, or remove it, as needed.
            this.categoriaTableAdapter.Fill(this.categoriaDS.categoria);
            // TODO: This line of code loads data into the 'productosDS.producto' table. You can move, or remove it, as needed.
            
        }

        private void dataGridView1_CellContentClick(object sender, DataGridViewCellEventArgs e)
        {

        }

        private void txtbuscar_TextChanged(object sender, EventArgs e)
        {
            this.producto_SelectLikeTableAdapter.Fill(this.productoDS.producto_SelectLike, "%" + txtbuscar.Text + "%");
            this.dataGridView1.Refresh();
        }

        private void button2_Click(object sender, EventArgs e)
        {
            Limpiar();
            QueHacer = INSERTAR;
        }
        private void Limpiar() {
            txtcodigo.Text = "";
            txtdescripcion.Text = "";
            txtideal.Text = "0";
            txtminimo.Text = "0";
            txtpreciomayorista.Text = "0";
            txtxpreciounitario.Text = "0";
            txtcosto.Text = "0";
        }

        private void txtcodigo_KeyPress(object sender, KeyPressEventArgs e)
        {
            UTIIIDADES.UTILIDADES.Mayuscula(e);
        }

        private void txtcosto_KeyPress(object sender, KeyPressEventArgs e)
        {
            UTIIIDADES.UTILIDADES.soloDecimanes(e,txtcosto);
        }

        private void txtxpreciounitario_KeyPress(object sender, KeyPressEventArgs e)
        {
            UTIIIDADES.UTILIDADES.soloDecimanes(e, txtxpreciounitario);
        }

        private void txtpreciomayorista_KeyPress(object sender, KeyPressEventArgs e)
        {
            UTIIIDADES.UTILIDADES.soloDecimanes(e, txtpreciomayorista);
        }

        private void txtideal_KeyPress(object sender, KeyPressEventArgs e)
        {
            UTIIIDADES.UTILIDADES.soloEnteros(e);
        }

        private void txtminimo_KeyPress(object sender, KeyPressEventArgs e)
        {
            UTIIIDADES.UTILIDADES.soloEnteros(e);
        }

        private void txtdescripcion_KeyPress(object sender, KeyPressEventArgs e)
        {
            UTIIIDADES.UTILIDADES.Mayuscula(e);
        }

        private void button4_Click(object sender, EventArgs e)
        {
            this.Hide();
        }
        private bool validarTextBox() {
            bool retornar=true;
            if(txtcodigo.Text.Length==0){
                retornar = false;
                txtcodigo.Focus();
            }
            if (txtdescripcion.Text.Length == 0)
            {
                retornar = false;
                txtdescripcion.Focus();
            }
            if (txtideal.Text.Length == 0)
            {
                txtideal.Text = "0";
            }
            if (txtminimo.Text.Length == 0)
            {
                txtminimo.Text = "0";
            }
            if (txtcosto.Text.Length == 0)
            {
                txtcosto.Text = "0";
                retornar = false;
                txtcosto.Focus();
            }
            if (txtxpreciounitario.Text.Length == 0)
            {
                txtxpreciounitario.Text = "0";
                retornar = false;
                txtxpreciounitario.Focus();
            } if (txtpreciomayorista.Text.Length == 0)
            {
                txtpreciomayorista.Text = "0";
                retornar = false;
                txtpreciomayorista.Focus();
            }
            return retornar;
        }
        private void button3_Click(object sender, EventArgs e)
        {
            if(validarTextBox()){
                    string codigo = txtcodigo.Text;
                    string descripcion = txtdescripcion.Text;
                    int idCategoria = 0;
                    int idMarca = 0;
                    int idUnidadMedida = 0;
                    try
                    {
                         idCategoria = (int)cbxcategoria.SelectedValue;
                         idMarca = (int)cbxmarca.SelectedValue;
                         idUnidadMedida = (int)cbxunidadmedida.SelectedValue;
                    }
                    catch (Exception)
                    {
                          MessageBox.Show(this, "No Existen Algunos Datos", "ADVERTENCIA");
                          return;
                    }
                    int stockIdeal = Convert.ToInt32(txtideal.Text);
                    int stockMinimo= Convert.ToInt32(txtminimo.Text);
                    double costo = Convert.ToDouble(txtcosto.Text);
                    double Punitario = Convert.ToDouble(txtxpreciounitario.Text);
                    double Pmayorista = Convert.ToDouble(txtpreciomayorista.Text);
                if(MODIFICAR == QueHacer){
                   productoBLL.modificar(PKmodificar, codigo, idMarca, idCategoria, idUnidadMedida, descripcion, costo, Punitario, Pmayorista, stockIdeal, stockMinimo, true);
                    MessageBox.Show(this, "Se modifico el producto correctamente", "MODIFICACION DE PRODUCTOS");
                }
                if(INSERTAR == QueHacer){
                    producto almacen = productoBLL.SelectByCodigo(codigo);
                    if (almacen != null)
                    {
                        MessageBox.Show(this, "Existe un producto con este codigo", "INSERCION");
                        txtcodigo.Focus();
                        return;
                    }
                    int pkproducto = productoBLL.insertar(codigo, idMarca, idCategoria, idUnidadMedida, descripcion, costo, Punitario, Pmayorista, stockIdeal, stockMinimo);
                    MessageBox.Show(this, "Se inserto el producto correctamente", "REGISTRO DE PRODUCTOS");  
                }
                QueHacer = INSERTAR;
                Limpiar();
                this.producto_SelectLikeTableAdapter.Fill(this.productoDS.producto_SelectLike, "%" + txtbuscar.Text + "%");
                this.dataGridView1.Refresh();
                return;
            }
            MessageBox.Show(this,"Algunos campos estan incompletos","FALTAS DATOS POR LLENAR");
        }

        private void dataGridView1_CellClick(object sender, DataGridViewCellEventArgs e)
        {
            if (dataGridView1.CurrentRow!=null)
            {
              int id= (int)dataGridView1.CurrentRow.Cells[0].Value;
              PKmodificar = id;
              producto pro = productoBLL.SelectByID(id);
              string codigo = dataGridView1.CurrentRow.Cells[1].Value.ToString();
              string idCategoria = dataGridView1.CurrentRow.Cells[2].Value.ToString();
              string idMarca = dataGridView1.CurrentRow.Cells[3].Value.ToString();
              string descripcion = dataGridView1.CurrentRow.Cells[4].Value.ToString();
              double costo = Convert.ToDouble(dataGridView1.CurrentRow.Cells[5].Value.ToString());
              string idUnidadMedida = dataGridView1.CurrentRow.Cells[6].Value.ToString();
              double Punitario = Convert.ToDouble(dataGridView1.CurrentRow.Cells[7].Value.ToString());
              double Pmayorista = Convert.ToDouble(dataGridView1.CurrentRow.Cells[8].Value.ToString());
              int stockIdeal = Convert.ToInt32(dataGridView1.CurrentRow.Cells[9].Value.ToString());
              int stockMinimo = Convert.ToInt32(dataGridView1.CurrentRow.Cells[10].Value.ToString());
              categoria cate = categoriaBLL.SelectCategoriaByID(pro.Idcategoria);
              marca marca = marcaBLL.SelectByID(pro.Idmarca);
              unidadMedida uni = unidaddemedidaBLL.SelectByID(pro.Idunidadmedida);
              cbxcategoria.SelectedValue = cate.Id;
              cbxmarca.SelectedValue = marca.Id;
              cbxunidadmedida.SelectedValue = uni.Id;
              QueHacer = MODIFICAR;
              txtcodigo.Text = codigo;
              txtdescripcion.Text = descripcion;
              txtcosto.Text = costo + "";
              txtideal.Text = stockIdeal + "";
              txtminimo.Text = stockMinimo + "";
              txtxpreciounitario.Text = Punitario + "";
              txtpreciomayorista.Text = Pmayorista + "";
            }
        }
    }
}
